import axios from 'axios' // 引入axios
import router from '../router'
import { Message } from 'element-ui';

axios.defaults.timeout = 100000;
// axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
axios.defaults.withCredentials = true;

if(process.env.NODE_ENV === 'production'){ // 线上生产环境
    // axios.defaults.baseURL = 'http://192.168.26.160';//原始的
    axios.defaults.baseURL = 'http://121.42.147.144:8091';//panpan20210113提交
   //  axios.defaults.baseURL = 'http://gf.chabaobao.net';
}else if(process.env.NODE_ENV === 'test'){ // 线上测试环境
    axios.defaults.baseURL = 'http://gf.chabaobao.net';
   //  axios.defaults.baseURL = 'http://gftest.chabaobao.net';
}else{  // 本地开发环境
    axios.defaults.baseURL = '/test';        // 连接线上测试服务器
    // axios.defaults.baseURL = '/production';  // 连接线上生产服务器
}

// http request 请求拦截器
axios.interceptors.request.use(
    config => {

        // 动态设置公共头信息
        config.headers.common["Authorization"] = localStorage.getItem("REVIEW-TOKEN");
        return config
    },
    err => {
        // Message.error(err.message);
        Message.error("操作频繁，请重试！");
        return Promise.reject(err)
    }
)

// 响应拦截器
axios.interceptors.response.use(
    response => {
        // console.log(response.data.status);
        // 对响应数据做些事

        if(response.data.code != undefined && response.data.code == 40101){
            // 非登录页面
            if(response.config.url.indexOf("/jwt/token") == -1){

                if(localStorage.getItem("REVIEW-TOKEN") != null){ // 避免重复弹出
                    Message.error("登录已失效，请重新登录！");
                }

                localStorage.removeItem("REVIEW-TOKEN");
                router.replace({ name: 'login'});

            }else{ // 登录页面发生权限错误
                Message.error(response.data.message);
            }
        }else if(response.data.code != undefined && response.data.code != 200){
            Message.error(response.data.message);
        }

        if(!response.data.success){
            return Promise.resolve(response);
        }
        return response;
    }, error => {
        // Message.error(error.message);
        Message.error("操作频繁，请重试！");
        return Promise.reject(error) // 返回接口返回的错误信息
})

export function get(url, params){
    return new Promise((resolve, reject) => {
        axios.get(url, { params: params })
            .then(res => {
                resolve(res.data)
            })
            .catch(err => {
                reject(err)
            })
    })
}

export function post(url, params) {
    return new Promise((resolve, reject) => {
        // axios.post(url, QS.stringify(params))
        axios.post(url,params)
            .then(res => {
                resolve(res.data)
            })
            .catch(err => {
                reject(err)
            })
    })
}

export function customize(config) {
    return new Promise((resolve, reject) => {
        axios(config)
            .then(res => {
                resolve(res.data)
            })
            .catch(err => {
                reject(err)
            })
    })
}
